Multiprocessor systems are systems that include multiple processors or CPUs (central processing units) that are linked together. A combination of hardware and operating-system software design considerations determines the operations that are permitted to occur in the multiprocessor system. For example, hardware or software considerations are considered to map out and execute how each of the CPUs will respond to hardware interrupts, how work in the system will be distributed among the CPUs, and/or how software code will be executed among and by the different CPUs.
Many multiprocessor systems contain multiple CPUs that have access to centrally shared resources, or participate in a scheme that shares both local and shared resources. For example, there are many different kinds of I/O devices that are supported by the different CPUs in a multiprocessor system, and many of these I/O devices have different levels of capabilities that need to be supported by the multiprocessor system. Such I/O devices may also be usable and sharable among the different processors in the multiprocessor system.
For each of the sharable and accessible devices in the system, such as I/O devices, a certain amount of configuration and setup will allow that device to be discovered and used by system software. Even in an ordinary single processor system, it is considered to be a fairly complicated task to make sure that the I/O devices are properly recognized and configured for use by the system software. This task is made even more difficult in a multiprocessor system, in which there are multiple processors and such devices that need to be properly recognized and configured are associated with the different processors in the system.
One possible approach that can be taken to address this problem is to separately write and store the drivers and configuration information for each device that pertains to each different processor in the system. The problem with this approach is that this approach necessarily requires wasteful duplication of resource to configure and store these separate copies of the configuration and driver information for the different processors, particularly if the same devices exist for the different processors. Another problem with this approach is that in some multiprocessor systems, it is desirable to use software at a master processor to start-up and control the activities of the other non-master processors. In this approach, there is a further emphasis on not duplicating such configuration and driver information on each of the processors.
Therefore, there is a need for an improvised approach to implement device configuration in a multiprocessor system.